// ---- Created with 3Dmigoto v1.3.16 on Thu Mar 24 16:00:21 2022

cbuffer _Globals : register(b0)
{
  float4 lightCount : packoffset(c0);
  float4 ambient : packoffset(c1);
  float4 lightInfo[4] : packoffset(c2);
  float4 g_vScreenDepthRect : packoffset(c6);
  float4 g_vDitherSettings : packoffset(c7);
  float4 g_ColorK : packoffset(c8) = {0.270000011,0.670000017,0.0599999987,0};
  float4 g_vLevelMin0 : packoffset(c9) = {0.0500000007,0.0500000007,0.0500000007,0};
  float4 g_vLevelMin1 : packoffset(c10) = {0.100000001,0.100000001,0.100000001,0};
  float4 g_vLevelMax : packoffset(c11) = {0.800000012,0.800000012,0.800000012,0};
  float4 g_vMaxAdd : packoffset(c12) = {0.100000001,0.100000001,0.100000001,0};
  float4 g_vMinSub : packoffset(c13) = {0.0199999996,0.0199999996,0.0199999996,0};
  float4 Color : packoffset(c14);
  float4 Settings : packoffset(c15);
  float4 Settings2 : packoffset(c16);
  float4 Settings3 : packoffset(c17);
  float4 Settings4 : packoffset(c18);
  float4 Transform : packoffset(c19);
  float4 g_vDepthCoordsClamp : packoffset(c20);
  float4 CamPos : packoffset(c21);
  float4 g_vCenterOffs : packoffset(c22);
  float4 g_vHFrustrum : packoffset(c23);
  float4 g_vVFrustrum : packoffset(c24);
  float4 g_avNoise[8] : packoffset(c25);
  float4x4 g_mView : packoffset(c33);
  float4 g_PixelsDir[8] : packoffset(c37);
  float4 g_vHistogramBoundLow : packoffset(c45) = {0,0.0160000008,0.0260000005,0.129999995};
  float4 g_vHistogramBoundHigh : packoffset(c46) = {0.0160000008,0.0260000005,0.129999995,0.409999996};
}

Texture2D<float4> DepthTexture : register(t0);
Texture2D<float4> DiffTexture : register(t1);
Texture2D<float4> DiffTexture2 : register(t2);
Texture2D<float4> ToneTexture : register(t3);


// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
  float4 v0 : SV_Position0,
  float2 v1 : TEXCOORD0,
  float2 w1 : TEXCOORD1,
  out float4 o0 : SV_Target0,
  out float4 o1 : SV_Target1,
  out float2 o2 : SV_Target2,
  out float oDepth : SV_Depth)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.xy = (int2)v1.xy;
  r1.xy = trunc(v1.xy);
  r1.zw = float2(0,0);
  r0.zw = float2(0,0);
  r2.x = DepthTexture.Load(r0.xyw).x;
  r2.y = min(1, r2.x);
  r2.z = cmp(-0.100000001 < r2.x);
  if (r2.z != 0) {
    r3.xyz = DiffTexture.Load(r0.xyw).xyz;
    r2.zw = cmp(float2(0.5,0.5) < Settings.wy);
    if (r2.z != 0) {
      r4.xy = DiffTexture2.Load(r0.xyw).xy;
    } else {
      r4.xy = float2(0,0);
    }
    if (r2.w != 0) {
      r0.xy = ToneTexture.Load(r0.xyz).zw;
    } else {
      r0.xy = float2(0,0);
    }
    r5.y = r2.x;
  } else {
    r3.xyz = float3(0,0,0);
    r4.xy = float2(0,0);
    r0.xy = float2(0,0);
    r5.y = -0.100000001;
  }
  r6.xyzw = float4(1,0,0,0) + r1.xyww;
  r6.xyzw = (int4)r6.xyzw;
  r0.z = DepthTexture.Load(r6.xyw).x;
  r0.w = min(r2.y, r0.z);
  r2.y = cmp(r5.y < r0.z);
  if (r2.y != 0) {
    r3.xyz = DiffTexture.Load(r6.xyw).xyz;
    r2.yz = cmp(float2(0.5,0.5) < Settings.wy);
    if (r2.y != 0) {
      r4.xy = DiffTexture2.Load(r6.xyw).xy;
    }
    if (r2.z != 0) {
      r0.xy = ToneTexture.Load(r6.xyz).zw;
    }
    r5.y = r0.z;
  }
  r6.xyzw = float4(0,1,0,0) + r1.xyww;
  r6.xyzw = (int4)r6.xyzw;
  r2.y = DepthTexture.Load(r6.xyw).x;
  r0.w = min(r2.y, r0.w);
  r2.z = cmp(r5.y < r2.y);
  if (r2.z != 0) {
    r3.xyz = DiffTexture.Load(r6.xyw).xyz;
    r2.zw = cmp(float2(0.5,0.5) < Settings.wy);
    if (r2.z != 0) {
      r4.xy = DiffTexture2.Load(r6.xyw).xy;
    }
    if (r2.w != 0) {
      r0.xy = ToneTexture.Load(r6.xyz).zw;
    }
    r5.y = r2.y;
  }
  r1.xyzw = float4(1,1,0,0) + r1.xyzw;
  r1.xyzw = (int4)r1.xyzw;
  r2.z = DepthTexture.Load(r1.xyw).x;
  r5.x = min(r2.z, r0.w);
  r0.w = cmp(r5.y < r2.z);
  if (r0.w != 0) {
    r3.xyz = DiffTexture.Load(r1.xyw).xyz;
    r4.zw = cmp(float2(0.5,0.5) < Settings.wy);
    if (r4.z != 0) {
      r5.zw = DiffTexture2.Load(r1.xyw).xy;
      o2.xy = r5.zw;
    } else {
      o2.xy = r4.xy;
    }
    if (r4.w != 0) {
      r0.xy = ToneTexture.Load(r1.xyz).zw;
    }
    r5.y = r2.z;
  } else {
    o2.xy = r4.xy;
  }
  r0.w = dot(r3.xyz, r3.xyz);
  r0.yw = cmp(r0.yw == float2(0,0));
  if (r0.w != 0) {
    r1.xyz = float3(0,0,-1);
  } else {
    r3.xyz = float3(-0.5,-0.5,-0.5) + r3.xyz;
    r0.w = dot(r3.xyz, r3.xyz);
    r0.w = rsqrt(r0.w);
    r3.xyz = r3.xyz * r0.www;
    r1.x = dot(r3.xyz, g_mView._m00_m10_m20);
    r1.y = dot(r3.xyz, g_mView._m01_m11_m21);
    r1.z = dot(r3.xyz, g_mView._m02_m12_m22);
  }
  o0.xyz = r1.xyz * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5);
  r0.y = r0.y ? 1.000000 : 0;
  o0.w = r0.x * r0.y;
  r0.xy = cmp(float2(0,0) < r5.yx);
  r1.xy = -Settings2.zz + r5.yx;
  r1.xy = Settings2.ww / r1.xy;
  r1.xy = r0.xy ? r1.xy : Settings.zz;
  r0.x = dot(r5.xy, float2(1,1));
  r0.x = cmp(r0.x >= 2);
  if (r0.x != 0) {
    oDepth = 1;
  } else {
    oDepth = r1.x / Settings.z;
  }
  r0.x = r1.y + -r1.x;
  r3.xyzw = g_vHistogramBoundLow.xyzw * r0.xxxx + r1.xxxx;
  r4.xyzw = g_vHistogramBoundHigh.xyzw * r0.xxxx + r1.xxxx;
  r0.xw = -Settings2.zz + r2.xz;
  r0.xw = Settings2.ww / r0.xw;
  r5.xyzw = cmp(r0.xxxx >= r3.xyzw);
  r5.xyzw = r5.xyzw ? float4(0,0,0,0) : 0;
  r6.xyzw = cmp(r0.xxxx < r4.xyzw);
  r6.xyzw = r6.xyzw ? float4(0,0,0,0) : 0;
  r5.xyzw = (int4)r5.xyzw * (int4)r6.xyzw;
  r5.xyzw = (int4)r5.xyzw;
  r0.y = -Settings2.z + r0.z;
  r0.y = Settings2.w / r0.y;
  r6.xyzw = cmp(r0.yyyy >= r3.xyzw);
  r6.xyzw = r6.xyzw ? float4(0,0,0,0) : 0;
  r7.xyzw = cmp(r0.yyyy < r4.xyzw);
  r7.xyzw = r7.xyzw ? float4(0,0,0,0) : 0;
  r6.xyzw = (int4)r6.xyzw * (int4)r7.xyzw;
  r6.xyzw = (int4)r6.xyzw;
  r7.xyzw = r6.xyzw + r5.xyzw;
  r0.z = -Settings2.z + r2.y;
  r0.z = Settings2.w / r0.z;
  r8.xyzw = cmp(r0.zzzz >= r3.xyzw);
  r8.xyzw = r8.xyzw ? float4(0,0,0,0) : 0;
  r9.xyzw = cmp(r0.zzzz < r4.xyzw);
  r9.xyzw = r9.xyzw ? float4(0,0,0,0) : 0;
  r8.xyzw = (int4)r8.xyzw * (int4)r9.xyzw;
  r8.xyzw = (int4)r8.xyzw;
  r7.xyzw = r8.xyzw + r7.xyzw;
  r2.xyzw = cmp(r0.wwww >= r3.xyzw);
  r2.xyzw = r2.xyzw ? float4(0,0,0,0) : 0;
  r3.xyzw = cmp(r0.wwww < r4.xyzw);
  r3.xyzw = r3.xyzw ? float4(0,0,0,0) : 0;
  r2.xyzw = (int4)r2.xyzw * (int4)r3.xyzw;
  r2.xyzw = (int4)r2.xyzw;
  r3.xyzw = r7.xyzw + r2.xyzw;
  r4.x = dot(r3.xyzw, float4(1,1,1,1));
  r4.x = cmp(0 < r4.x);
  if (r4.x != 0) {
    r4.xyzw = r6.xyzw * r0.yyyy;
    r4.xyzw = r5.xyzw * r0.xxxx + r4.xyzw;
    r4.xyzw = r8.xyzw * r0.zzzz + r4.xyzw;
    r0.xyzw = r2.xyzw * r0.wwww + r4.xyzw;
    r2.xyzw = max(float4(9.99999997e-007,9.99999997e-007,9.99999997e-007,9.99999997e-007), r3.xyzw);
    r0.xyzw = r0.xyzw / r2.xyzw;
    r2.xyzw = r3.xyzw * r3.xyzw;
    r0.xyzw = r2.xyzw * r0.xyzw;
    r0.x = dot(r0.xyzw, float4(1,1,1,1));
    r0.y = dot(r2.xyzw, float4(1,1,1,1));
    r1.z = r0.x / r0.y;
  } else {
    r0.x = r1.y + r1.x;
    r1.z = 0.5 * r0.x;
  }
  r1.w = 0;
  o1.xyzw = float4(0.25,0.25,0.25,0.25) * r1.xyzw;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//   using 3Dmigoto v1.3.16 on Thu Mar 24 16:00:21 2022
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
//   float4 lightCount;                 // Offset:    0 Size:    16 [unused]
//   float4 ambient;                    // Offset:   16 Size:    16 [unused]
//   float4 lightInfo[4];               // Offset:   32 Size:    64 [unused]
//   float4 g_vScreenDepthRect;         // Offset:   96 Size:    16 [unused]
//   float4 g_vDitherSettings;          // Offset:  112 Size:    16 [unused]
//   float4 g_ColorK;                   // Offset:  128 Size:    16 [unused]
//      = 0x3e8a3d71 0x3f2b851f 0x3d75c28f 0x00000000
//   float4 g_vLevelMin0;               // Offset:  144 Size:    16 [unused]
//      = 0x3d4ccccd 0x3d4ccccd 0x3d4ccccd 0x00000000
//   float4 g_vLevelMin1;               // Offset:  160 Size:    16 [unused]
//      = 0x3dcccccd 0x3dcccccd 0x3dcccccd 0x00000000
//   float4 g_vLevelMax;                // Offset:  176 Size:    16 [unused]
//      = 0x3f4ccccd 0x3f4ccccd 0x3f4ccccd 0x00000000
//   float4 g_vMaxAdd;                  // Offset:  192 Size:    16 [unused]
//      = 0x3dcccccd 0x3dcccccd 0x3dcccccd 0x00000000
//   float4 g_vMinSub;                  // Offset:  208 Size:    16 [unused]
//      = 0x3ca3d70a 0x3ca3d70a 0x3ca3d70a 0x00000000
//   float4 Color;                      // Offset:  224 Size:    16 [unused]
//   float4 Settings;                   // Offset:  240 Size:    16
//   float4 Settings2;                  // Offset:  256 Size:    16
//   float4 Settings3;                  // Offset:  272 Size:    16 [unused]
//   float4 Settings4;                  // Offset:  288 Size:    16 [unused]
//   float4 Transform;                  // Offset:  304 Size:    16 [unused]
//   float4 g_vDepthCoordsClamp;        // Offset:  320 Size:    16 [unused]
//   float4 CamPos;                     // Offset:  336 Size:    16 [unused]
//   float4 g_vCenterOffs;              // Offset:  352 Size:    16 [unused]
//   float4 g_vHFrustrum;               // Offset:  368 Size:    16 [unused]
//   float4 g_vVFrustrum;               // Offset:  384 Size:    16 [unused]
//   float4 g_avNoise[8];               // Offset:  400 Size:   128 [unused]
//   float4x4 g_mView;                  // Offset:  528 Size:    64
//   float4 g_PixelsDir[8];             // Offset:  592 Size:   128 [unused]
//   float4 g_vHistogramBoundLow;       // Offset:  720 Size:    16
//      = 0x00000000 0x3c83126f 0x3cd4fdf4 0x3e051eb8
//   float4 g_vHistogramBoundHigh;      // Offset:  736 Size:    16
//      = 0x3c83126f 0x3cd4fdf4 0x3e051eb8 0x3ed1eb85
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// DepthTexture                      texture  float4          2d    0        1
// DiffTexture                       texture  float4          2d    1        1
// DiffTexture2                      texture  float4          2d    2        1
// ToneTexture                       texture  float4          2d    3        1
// $Globals                          cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float
// TEXCOORD                 0   xy          1     NONE   float   xy
// TEXCOORD                 1     zw        1     NONE   float
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
// SV_Target                1   xyzw        1   TARGET   float   xyzw
// SV_Target                2   xy          2   TARGET   float   xy
// SV_Depth                 0    N/A   oDepth    DEPTH   float    YES
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[47], immediateIndexed
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_input_ps linear v1.xy
dcl_output o0.xyzw
dcl_output o1.xyzw
dcl_output o2.xy
dcl_output oDepth
dcl_temps 10
ftoi r0.xy, v1.xyxx
round_z r1.xy, v1.xyxx
mov r1.zw, l(0,0,0,0)
mov r0.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r2.x, r0.xyww, t0.xyzw
min r2.y, r2.x, l(1.000000)
lt r2.z, l(-0.100000), r2.x
if_nz r2.z
  ld_indexable(texture2d)(float,float,float,float) r3.xyz, r0.xyww, t1.xyzw
  lt r2.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[15].wwwy
  if_nz r2.z
    ld_indexable(texture2d)(float,float,float,float) r4.xy, r0.xyww, t2.xyzw
  else
    mov r4.xy, l(0,0,0,0)
  endif
  if_nz r2.w
    ld_indexable(texture2d)(float,float,float,float) r0.xy, r0.xyzw, t3.zwxy
  else
    mov r0.xy, l(0,0,0,0)
  endif
  mov r5.y, r2.x
else
  mov r3.xyz, l(0,0,0,0)
  mov r4.xy, l(0,0,0,0)
  mov r0.xy, l(0,0,0,0)
  mov r5.y, l(-0.100000)
endif
add r6.xyzw, r1.xyww, l(1.000000, 0.000000, 0.000000, 0.000000)
ftoi r6.xyzw, r6.xyzw
ld_indexable(texture2d)(float,float,float,float) r0.z, r6.xyww, t0.yzxw
min r0.w, r0.z, r2.y
lt r2.y, r5.y, r0.z
if_nz r2.y
  ld_indexable(texture2d)(float,float,float,float) r3.xyz, r6.xyww, t1.xyzw
  lt r2.yz, l(0.000000, 0.500000, 0.500000, 0.000000), cb0[15].wwyw
  if_nz r2.y
    ld_indexable(texture2d)(float,float,float,float) r4.xy, r6.xyww, t2.xyzw
  endif
  if_nz r2.z
    ld_indexable(texture2d)(float,float,float,float) r0.xy, r6.xyzw, t3.zwxy
  endif
  mov r5.y, r0.z
endif
add r6.xyzw, r1.xyww, l(0.000000, 1.000000, 0.000000, 0.000000)
ftoi r6.xyzw, r6.xyzw
ld_indexable(texture2d)(float,float,float,float) r2.y, r6.xyww, t0.yxzw
min r0.w, r0.w, r2.y
lt r2.z, r5.y, r2.y
if_nz r2.z
  ld_indexable(texture2d)(float,float,float,float) r3.xyz, r6.xyww, t1.xyzw
  lt r2.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[15].wwwy
  if_nz r2.z
    ld_indexable(texture2d)(float,float,float,float) r4.xy, r6.xyww, t2.xyzw
  endif
  if_nz r2.w
    ld_indexable(texture2d)(float,float,float,float) r0.xy, r6.xyzw, t3.zwxy
  endif
  mov r5.y, r2.y
endif
add r1.xyzw, r1.xyzw, l(1.000000, 1.000000, 0.000000, 0.000000)
ftoi r1.xyzw, r1.xyzw
ld_indexable(texture2d)(float,float,float,float) r2.z, r1.xyww, t0.yzxw
min r5.x, r0.w, r2.z
lt r0.w, r5.y, r2.z
if_nz r0.w
  ld_indexable(texture2d)(float,float,float,float) r3.xyz, r1.xyww, t1.xyzw
  lt r4.zw, l(0.000000, 0.000000, 0.500000, 0.500000), cb0[15].wwwy
  if_nz r4.z
    ld_indexable(texture2d)(float,float,float,float) r5.zw, r1.xyww, t2.zwxy
    mov o2.xy, r5.zwzz
  else
    mov o2.xy, r4.xyxx
  endif
  if_nz r4.w
    ld_indexable(texture2d)(float,float,float,float) r0.xy, r1.xyzw, t3.zwxy
  endif
  mov r5.y, r2.z
else
  mov o2.xy, r4.xyxx
endif
dp3 r0.w, r3.xyzx, r3.xyzx
eq r0.yw, r0.yyyw, l(0.000000, 0.000000, 0.000000, 0.000000)
if_nz r0.w
  mov r1.xyz, l(0,0,-1.000000,0)
else
  add r3.xyz, r3.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000)
  dp3 r0.w, r3.xyzx, r3.xyzx
  rsq r0.w, r0.w
  mul r3.xyz, r0.wwww, r3.xyzx
  dp3 r1.x, r3.xyzx, cb0[33].xyzx
  dp3 r1.y, r3.xyzx, cb0[34].xyzx
  dp3 r1.z, r3.xyzx, cb0[35].xyzx
endif
mad o0.xyz, r1.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), l(0.500000, 0.500000, 0.500000, 0.000000)
and r0.y, r0.y, l(0x3f800000)
mul o0.w, r0.y, r0.x
lt r0.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r5.yxyy
add r1.xy, r5.yxyy, -cb0[16].zzzz
div r1.xy, cb0[16].wwww, r1.xyxx
movc r1.xy, r0.xyxx, r1.xyxx, cb0[15].zzzz
dp2 r0.x, r5.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
ge r0.x, r0.x, l(2.000000)
if_nz r0.x
  mov oDepth, l(1.000000)
else
  div oDepth, r1.x, cb0[15].z
endif
add r0.x, -r1.x, r1.y
mad r3.xyzw, cb0[45].xyzw, r0.xxxx, r1.xxxx
mad r4.xyzw, cb0[46].xyzw, r0.xxxx, r1.xxxx
add r0.xw, r2.xxxz, -cb0[16].zzzz
div r0.xw, cb0[16].wwww, r0.xxxw
ge r5.xyzw, r0.xxxx, r3.xyzw
and r5.xyzw, r5.xyzw, l(1, 1, 1, 1)
lt r6.xyzw, r0.xxxx, r4.xyzw
and r6.xyzw, r6.xyzw, l(1, 1, 1, 1)
imul null, r5.xyzw, r5.xyzw, r6.xyzw
itof r5.xyzw, r5.xyzw
add r0.y, r0.z, -cb0[16].z
div r0.y, cb0[16].w, r0.y
ge r6.xyzw, r0.yyyy, r3.xyzw
and r6.xyzw, r6.xyzw, l(1, 1, 1, 1)
lt r7.xyzw, r0.yyyy, r4.xyzw
and r7.xyzw, r7.xyzw, l(1, 1, 1, 1)
imul null, r6.xyzw, r6.xyzw, r7.xyzw
itof r6.xyzw, r6.xyzw
add r7.xyzw, r5.xyzw, r6.xyzw
add r0.z, r2.y, -cb0[16].z
div r0.z, cb0[16].w, r0.z
ge r8.xyzw, r0.zzzz, r3.xyzw
and r8.xyzw, r8.xyzw, l(1, 1, 1, 1)
lt r9.xyzw, r0.zzzz, r4.xyzw
and r9.xyzw, r9.xyzw, l(1, 1, 1, 1)
imul null, r8.xyzw, r8.xyzw, r9.xyzw
itof r8.xyzw, r8.xyzw
add r7.xyzw, r7.xyzw, r8.xyzw
ge r2.xyzw, r0.wwww, r3.xyzw
and r2.xyzw, r2.xyzw, l(1, 1, 1, 1)
lt r3.xyzw, r0.wwww, r4.xyzw
and r3.xyzw, r3.xyzw, l(1, 1, 1, 1)
imul null, r2.xyzw, r2.xyzw, r3.xyzw
itof r2.xyzw, r2.xyzw
add r3.xyzw, r2.xyzw, r7.xyzw
dp4 r4.x, r3.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
lt r4.x, l(0.000000), r4.x
if_nz r4.x
  mul r4.xyzw, r0.yyyy, r6.xyzw
  mad r4.xyzw, r5.xyzw, r0.xxxx, r4.xyzw
  mad r4.xyzw, r8.xyzw, r0.zzzz, r4.xyzw
  mad r0.xyzw, r2.xyzw, r0.wwww, r4.xyzw
  max r2.xyzw, r3.xyzw, l(0.000001, 0.000001, 0.000001, 0.000001)
  div r0.xyzw, r0.xyzw, r2.xyzw
  mul r2.xyzw, r3.xyzw, r3.xyzw
  mul r0.xyzw, r0.xyzw, r2.xyzw
  dp4 r0.x, r0.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
  dp4 r0.y, r2.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
  div r1.z, r0.x, r0.y
else
  add r0.x, r1.x, r1.y
  mul r1.z, r0.x, l(0.500000)
endif
mov r1.w, l(0)
mul o1.xyzw, r1.xyzw, l(0.250000, 0.250000, 0.250000, 0.250000)
ret
// Approximately 164 instruction slots used

//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
